import request, { fetchData } from '../request'

/**
 * 获取用户信息
 */
export function getInfo(code) {
  return fetchData({
    url: '/kfWechatUser/geyUserWx',
    method: 'post',
    data: { code },
  })
}

// 预设问题初始化接口
export function chatInit(shareId) {
  return fetchData({
    url: '/api/v1/init',
    method: 'post',
    params: { shareId },
  })
}

// 列表
export function getSharePreQuesList(shareId, data) {
  return fetchData({
    url: '/api/v1/pre_que_list',
    method: 'post',
    params: {
      shareId,
    },
    data,
  })
}

// 问题列表
export function getPreQuesList(data) {
  return fetchData({
    url: '/preQuestion/search',
    method: 'post',
    data,
  })
}

// 分享页面预设问题的日志记录
export function savePreRecord(shareId, data) {
  return fetchData({
    url: '/api/v1/save_pre_record',
    method: 'post',
    params: { shareId },
    data,
  })
}

// 用户反馈接口
export function userFeedback(shareId, data) {
  return fetchData({
    url: '/api/v1/update_user_feedback',
    method: 'post',
    params: { shareId },
    data,
  })
}

// 使用llm模型对话(通过fastchat)生成对话标题
export async function generateTitle(params) {
  try {
    const data = {
      model: 'gpt-3.5-turbo',
      stream: false,
      n: 1,
      temperature: 0.7,
      max_tokens: 2048,
      presence_penalty: 0,
      frequency_penalty: 0,
      stop: [],
      ...params,
    }
    data.messages.push({
      role: 'user',
      content:
        '使用四到五个字直接返回这句话的简要主题，不要解释、不要标点、不要语气词、不要多余文本，如果没有主题，请直接返回“闲聊”',
    })
    const res = await service({
      url: '/form/knowledgeBase/chat/sse',
      method: 'post',
      data,
      responseType: 'arraybuffer',
    })
    // 截取掉不需要的字符的二进制数据，不需要的字符为id:null data:
    const arr = res.data.slice(13)
    const decoder = new TextDecoder('utf-8')
    const text = decoder.decode(arr)
    return text
  } catch (error) {
    throw new Error(error)
  }
}
